<?php
/**
 * Это класс-обертка для библиотеки скачивания и парсинга RSS каналов
 * 
 * @author Alexander Sibiryakov
 */
class RssLibWrapper {
	
	public function __construct() {
		$this->magpieInit();
	}
	
	/**
	 * Создать из массива экземпляр класса RssItem
	 * 
	 * @return RssItem
	 */
	public function makeRssItem(array $item) {
		$a = new RssItem($item);
		/*
		$h = fopen("tests/rss_item", "w");
		fwrite($h, serialize($a));
		fclose($h);
		die();
		*/
		return $a;
	}
	
	private function magpieInit() {
		define("MAGPIE_OUTPUT_ENCODING", 'UTF-8');
		define("MAGPIE_DETECT_ENCODING", true);
		define("MAGPIE_CACHE_DIR", "./var/magpierss");
		define("MAGPIE_USE_GZIP", false); // пришлось убрать потому что на строке 548 файл Snoopy.class.inc 
		// в переменную кладется не правдоподобное кол-во данных - не менее 120Mb, в результате работы gzinflate()
		require_once("lib/magpierss/rss_utils.inc");
		require_once("lib/magpierss/rss_fetch.inc");
	}
	
	/**
	 * Определить является ли $url валидным адресом RSS потока. Пытается считать это RSS пток и распарсить.
	 * 
	 * @return boolean
	 * @param $url
	 */
	public function isRss( $url ) {
		$rss = fetch_rss( $url );
		if ($rss && !$rss->ERROR) {
			return true;
			}
		return false;
	}
	
	/**
	 * Скачать RSS, используя кэш или не используя.
	 * 
	 * @return array
	 * @param $url - адрес потока
	 * @param $use_cache - ипользовать/не использовать кэш
	 */
	public function fetch ($url, $use_cache=true) {
		if ($use_cache) {
			$a = fetch_rss($url);
		} else {
			$a = fetch_rss_ignore_cache($url);
		}
		/*
		$h = fopen("rss_serialize", "w");
		fwrite($h, serialize($a));
		fclose($h);
		*/
		return $a;
	
	}
	
	public function getRssFromHtmlDoc($html) {
		// use this http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP
	}

}

?>
